package main

import (
	"fmt"
)

// 声明全局变量 方法一,二,三都可以
var gA int = 100
var gB = 200

//第四种方法声明变量
//gC :=300 (报错)

func main() {
	//方法一 ： 声明一个变量 默认的值为0
	var a int
	fmt.Println("a=", a)
	fmt.Printf("type of a = %T\n", a)

	//方法二 : 声明一个变量 初始化一个值
	var b int = 100
	fmt.Println("b=", b)
	fmt.Printf("type of b = %T\n", b)

	var bb string = "abcdefg"
	fmt.Printf("bb = %s,type of bb = %T\n", bb, bb)

	//方法三 ： 在初始化的时候可以省去数据类型，通过值匹配数据类型
	var c = 999
	fmt.Println("c=", c)
	fmt.Printf("type of c = %T\n", c)

	var cc = "abcdefg"
	fmt.Printf("bb = %s,type of bb = %T\n", cc, cc)

	//方法四 : (常用方法) 省去关键字var，直接自动配置
	e := 100
	fmt.Println("e=", e)
	fmt.Printf("type of e = %T\n", e)

	f := "abcde"
	fmt.Println("f=", f)
	fmt.Printf("type of f = %T\n", f)

	g := 3.14
	fmt.Println("g=", g)
	fmt.Printf("type of g = %T\n", g)

	fmt.Println("gA=", gA, "gB=", gB)

	//声明多个变量
	var xx, yy int = 100, 200
	fmt.Println("xx=", xx, "yy=", yy)
	var kk, ll = 100, "Aceld"
	fmt.Println("kk=", kk, "ll=", ll)

	//多行的多变量声明
	var (
		vv int  = 100
		jj bool = true
	)
	fmt.Println("vv=", vv, "jj=", jj)
}
